package com.zhn;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Stack;

//给你一棵二叉树的根节点 root ，返回其节点值的 后序遍历 。

public class PostorderTraversal {
    // 后序遍历顺序 左-右-中 入栈顺序：中-左-右 出栈顺序：中-右-左， 最后翻转结果
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        if(root == null){
            return res;
        }
        Stack<TreeNode> stack = new Stack<>();
        stack.push(root);
        while(!stack.isEmpty()){
            TreeNode pop = stack.pop();
            res.add(pop.val);
            if(pop.left != null){
                stack.push(pop.left);
            }
            if(pop.right != null){
                stack.push(pop.right);
            }
        }
        Collections.reverse(res);
        return res;
    }
}
